package com.gqs.bookstore.util;

import java.util.Random;

public class Salt {
	/**
	 * 产生随机的盐值 
	 * java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数，分别是Random()和Random(long seed)。
	 * Random()默认使用当前时间即System.currentTimeMillis()作为发生器的种子，Random(long seed)使用指定的seed作为发生器的种子。
	 * 种子的意思是会在Random()随机数发生器里产生一个序列
	 * 随机数发生器即Random对象产生以后，可以通过对象调用不同的函数：
	 * nextInt()、nextLong()、nextFloat()、nextDouble()等来获得不同类型的随机数。
	 */
	private static final String  str = "abcdefghijklmnopqrstuvwxyz0123456789";
	private static StringBuilder sb = new StringBuilder();
	private static final int length = 10;
	private static Random random = new Random(System.currentTimeMillis());
	
	public static String getSalt(){
		for(int i=0;i<length;i++){
			int index = random.nextInt(str.length());
			char s = str.charAt(index);
			sb.append(s);
		}
		return sb.toString();
	}
	
//	public static void main(String[] args) {
//		System.out.println(Salt.getSalt());
//	}
	
	/**********************************测试盐值的值********************************************/
			//	public static void main(String[] args) {
			//	String str = "abcdefghijklmnopqrstuvwxyz0123456789";
			//	StringBuilder sb = new StringBuilder();//构造一个其中不带字符的字符串生成器，初始容量为 16 个字符[不是长度是16]
			//	int length=10;
			//	//Random(long seed)使用单个 long 种子创建一个新的随机数生成器。
			//	//static long currentTimeMillis()--返回以毫秒为单位的当前时间//--当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差（以毫秒为单位测量）。
			//	//currentTimeMillis()在Random(long seed)会生成一个序列，每次new的时候取系统时间都是不一样的
			//	Random random = new Random(System.currentTimeMillis());
			//	for(int i=0;i<length;i++) {
			//		//int random.nextInt(int n)返回一个伪随机数，它是取自此随机数生成器序列的、在 0（包括）和指定值n（不包括）[即n-1]之间均匀分布的 int值
			//		//伪随机地生成并返回指定范围中的一个 int 值。所有可能的 n 个 int 值的生成概率（大致）相同
			//		int index = random.nextInt(str.length());
			//		//char str.charAt(int index)返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处str
			//		char s = str.charAt(index);
			//		sb.append(s);
			//	}
			//	System.out.println(sb.toString());
			//}
}
